package com.zj.study.utils.beancopier;

/**
 * @author 赵赳
 * @since 2021/9/22 11:44
 */
public interface Converter<S, T> {

  /**
   * convert 方法的方法名
   */
  String CONVERT_METHOD_NAME = "convert";

  /**
   * convert 方法的桥接方法描述符
   */
  String CONVERT_BRIDGE_METHOD_DESCRIPTOR = "(Ljava/lang/Object;)Ljava/lang/Object;";

  /**
   * 拷贝对象
   * <p>该方法的具体实现由 asm 字节码生成, 内容为所有 target.setXX(source.getXX)</p>
   *
   * @param source 拷贝来源
   * @return T
   */
  T convert(S source);
}